package TCP;

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

/**
 * Day09_Client_Thread 类表示一个客户端线程，用于与服务器建立连接并进行数据通信。
 */
public class Day09_Client_Thread {

    /**
     * 程序的主入口函数。
     * @param args 命令行参数（未使用）
     */
    public static void main(String[] args) {
        // 尝试连接服务器
        try {
            // 获取本地主机地址并创建一个Socket连接到服务器的9999端口
            InetAddress inetAddress =
                    InetAddress.getLocalHost();
            Socket socket =
                    new Socket(inetAddress, 9999);
            System.out.println
                    ("我是客户端，已经连上服务器");

            // 从控制台读取数据
            Scanner scanner =
                    new Scanner(System.in);

            // 创建一个线程，用于独立接收来自服务器或其他客户端的信息
            Day09_Client_Thread_outclass clientThread =
                    new Day09_Client_Thread_outclass(socket);
            clientThread.start();

            // 获取Socket的输出流，并依次包装为DataOutputStream和PrintWriter，用于发送数据
            OutputStream outputStream
                    = socket.getOutputStream();
            DataOutputStream dataOutputStream =
                    new DataOutputStream(outputStream);
            PrintWriter printWriter =
                    new PrintWriter(dataOutputStream, true);

            // 循环读取控制台输入，并将输入发送给服务器
            while (true) {
                System.out.println("请输入数据：");
                String info = scanner.nextLine();
                printWriter.println(info);
            }

        } catch (UnknownHostException e) {
            // 处理未知主机异常
            e.printStackTrace();
        } catch (IOException e) {
            // 处理IO异常
            e.printStackTrace();
        }

    }

}

